package com;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

/**
 * java开发二维码生成器
 * @author fengshan
 *
 */
public class QrcodeChat {
    /**
	 * @author fengshan
	 * @param contents 文本内容
	 * @param imgPath 图片路径
	 * */
	public static void GetQrcodeImgBycontents(String contents,String imgPath)
	{
		int width=140;
		int height=140;
		try{
		//实例化qrcode对象
		Qrcode qrCode=new Qrcode();
		//设置二维码排错率
		qrCode.setQrcodeErrorCorrect('M');
		qrCode.setQrcodeEncodeMode('B');
		qrCode.setQrcodeVersion(7);
		BufferedImage bufImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
		//绘制二维码图片
		Graphics2D gs=bufImg.createGraphics();
		//设置二维码矩形区域的背景颜色，设置为白色
		gs.setBackground(Color.WHITE);
		//创建一个图像矩形区域
		gs.clearRect(0, 0, width, height);
		//设置二维码的颜色
		gs.setColor(Color.BLACK);
		//获取内容，通过一个数组的形式设置编码
		byte [] contentBytes=contents.getBytes("gb2312");//涉及到文件和流，需要捕捉异常
		int pixoff=2;
		
		if(contentBytes.length>0&&contentBytes.length<120)
		{
			
			boolean [][] codeOut=qrCode.calQrcode(contentBytes);
			for(int i=0;i<codeOut.length;i++)
			{
				for(int j=0;j<codeOut.length;j++)
				{
					if(codeOut[j][i])
					{
						gs.fillRect(j*3+pixoff, i*3+pixoff, 3, 3);
					}
					
				}
				
			}
		}
		else 
		{
			System.out.println("出错了");
		}
		
		gs.dispose();
		bufImg.flush();
		//生成二维码图片
		File imgFile=new File(imgPath);
		ImageIO.write(bufImg, "png", imgFile);
		System.out.println("二维码生成成功！！！");
		}
	
		catch(Exception e)
		{
			e.getStackTrace();
		}
		
	};
	
	
	public static void main(String args[])
	{
		System.out.println("欢迎来到Java二维码生成器");
		String contents="I LOVE YOU ！！！";
		String imgPath="F:\\c_java\\web\\zfs.png";
		GetQrcodeImgBycontents(contents, imgPath);
		
	}

};
